package com.tdma.g12.sql;

import java.util.ArrayList;
import com.tdam.g12.soporte.Contacto;
import com.tdam.g12.soporte.Historial;
import com.tdam.g12.soporte.MensajeWEB;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class ContactoSMSWebHelper extends SQLiteOpenHelper
{
	
	//Estructura
	static final String DB_NAME = "ContactoSMSWeb";
	//Tabla Contactos SMSWeb
	public static final String CONTACTO_SMS_WEB_TABLE  = "ContactosSMSWeb";
	public static final String COL_ID_CONTACTO_WEB     = "_ID";
	public static final String COL_NOMBRE_CONTACTO_WEB = "contactoWEB";
	public static final String COL_ID_EXTERNO_WEB      = "idExterno";
	//Tabla historial acciones
	public static final String HISTORIAL_TABLE         = "Historial";
	public static final String COL_ID_HISTORIAL        = "_ID";
	public static final String COL_TIPO_EVENTO         = "tipoEvento";
	public static final String COL_DATE_HISTORIAL      = "date";
	public static final String COL_ID_CONTACTO_DESTINO = "idContacto";
	public static final String COL_NOMBRE_CONTACTO     = "nombreContacto";
	
    private void createDataBase(SQLiteDatabase db) {

    	StringBuilder createTableContactosSMSWeb = new StringBuilder();
		
		createTableContactosSMSWeb.append(" CREATE TABLE IF NOT EXISTS \"" + CONTACTO_SMS_WEB_TABLE + "\"");
		createTableContactosSMSWeb.append(" (\"" + COL_ID_CONTACTO_WEB     + "\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, ");
		createTableContactosSMSWeb.append(" \""  + COL_NOMBRE_CONTACTO_WEB + "\" TEXT, ");
		createTableContactosSMSWeb.append(" \""  + COL_ID_EXTERNO_WEB      + "\" INTEGER )");
		
		StringBuilder createTableHistorial = new StringBuilder();
		
		createTableHistorial.append(" CREATE TABLE IF NOT EXISTS \"" + HISTORIAL_TABLE + "\"");
		createTableHistorial.append(" (\"" + COL_ID_HISTORIAL        + "\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, ");
		createTableHistorial.append(" \""  + COL_TIPO_EVENTO         + "\" INTEGER, ");
		createTableHistorial.append(" \""  + COL_DATE_HISTORIAL      + "\" TEXT, ");
		createTableHistorial.append(" \""  + COL_ID_CONTACTO_DESTINO + "\" INTEGER, ");
		createTableHistorial.append(" \""  + COL_NOMBRE_CONTACTO     + "\" TEXT) ");

		db.execSQL(createTableContactosSMSWeb.toString());
		db.execSQL(createTableHistorial.toString());
	}
    
    
    public ContactoSMSWebHelper(Context context)
    {
    	super(context, DB_NAME, null, 2);
    }

	@Override
	public void onCreate(SQLiteDatabase db)
	{
		// TODO Auto-generated method stub
		createDataBase(db);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
	{
		// TODO Auto-generated method stub
		db.execSQL("DROP TABLE IF EXISTS " + CONTACTO_SMS_WEB_TABLE);
		db.execSQL("DROP TABLE IF EXISTS " + HISTORIAL_TABLE);
		onCreate(db);
	}
	
	/*
	 * MANEJO DE CONTACTOS PARA SMS WEB
	 */
	public void AddContactoSMSWeb(Contacto contacto)
	{
		ContentValues cv = new ContentValues();
		
		ArrayList<MensajeWEB> lista = contacto.getMensajesWeb();

		for (int i = 0; i < lista.size() ; i++)
		{
			cv.put(COL_NOMBRE_CONTACTO_WEB, lista.get(i).getNombreContactoWebetUsuarioWEB());
			cv.put(COL_ID_EXTERNO_WEB, lista.get(i).getIdContactoExterno());
		}
		
		if (cv.size()>0)
		{
			SQLiteDatabase db = this.getWritableDatabase();
			db.insert(CONTACTO_SMS_WEB_TABLE, null, cv);
			db.close();	
		}
	}
	
	public void UpdContactoSMSWeb (Contacto contacto)
	{
		ContentValues cv = new ContentValues();

		ArrayList<MensajeWEB> lista = contacto.getMensajesWeb();
		String []idExternos = new String [lista.size()];

		for (int i = 0; i < lista.size() ; i++)
		{
			cv.put(COL_NOMBRE_CONTACTO_WEB, lista.get(i).getNombreContactoWebetUsuarioWEB());
			idExternos[i] = String.valueOf(lista.get(i).getIdContactoExterno());
		}
		
		if (cv.size()>0)
		{
			SQLiteDatabase db = this.getWritableDatabase();
			db.update(CONTACTO_SMS_WEB_TABLE, cv, COL_ID_CONTACTO_WEB +"=?", idExternos);
		}
	}
	
	public void DelContactoSMSWeb (Contacto contacto)
	{
		ArrayList<MensajeWEB> lista = contacto.getMensajesWeb();
		
		String []idExternos = new String [lista.size()];

		for (int i = 0; i < lista.size() ; i++)
		{
			idExternos[i] = String.valueOf(lista.get(i).getIdContactoExterno());
		}
		
		if (idExternos.length > 0)
		{
			SQLiteDatabase db = this.getWritableDatabase();
			db.delete(CONTACTO_SMS_WEB_TABLE, COL_ID_CONTACTO_WEB +"=?", idExternos);
		}
	}
	
	public Cursor getContactoSMSWeb(String [] idContactoWeb)
	{
		if (idContactoWeb.length == 1)
		{
			String sql = " SELECT * FROM " + CONTACTO_SMS_WEB_TABLE + " WHERE " + COL_ID_CONTACTO_WEB + "=?";
			SQLiteDatabase db = this.getReadableDatabase();
			Cursor cur = db.rawQuery(sql, idContactoWeb);
			return cur;			
		}
		return null;
	}
	
	/*
	 * MANEJO DE HISTORIAL
	 */
	public void AddItemHistorial (Historial itemHistorial)
	{
		ContentValues cv = new ContentValues();
		
		if (itemHistorial != null)
		{
			cv.put(COL_TIPO_EVENTO, itemHistorial.getType());
			cv.put(COL_DATE_HISTORIAL, itemHistorial.getDate());
			cv.put(COL_ID_CONTACTO_DESTINO, itemHistorial.getIdContacto());
			cv.put(COL_NOMBRE_CONTACTO, itemHistorial.getNombreContacto());
		}
		
		if (cv.size()>0)
		{
			SQLiteDatabase db = this.getWritableDatabase();
			db.insert(HISTORIAL_TABLE, null, cv);
			db.close();	
		}
	}
	
	public void DelHistorial (String[] idContacto)
	{
		if (idContacto.length > 0)
		{
			SQLiteDatabase db = this.getWritableDatabase();
			db.delete(HISTORIAL_TABLE, COL_ID_CONTACTO_DESTINO + "=?", idContacto);
		}
	}
	
	public Cursor getHistorialContacto(String[] idContacto)
	{
		if (idContacto.length > 0)
		{
			SQLiteDatabase db = this.getReadableDatabase();
			Cursor cursor = db.rawQuery(" SELECT * FROM " + HISTORIAL_TABLE + " WHERE " + COL_ID_CONTACTO_DESTINO + "=?", idContacto);
			return cursor;
		}
		return null;
	}
}
